﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using TechControl.BD;

namespace TechControl.Presentation
{
    public partial class frm_altFuncionario : frm_default
    {
        frm_listarFuncionario listFuncionario = new frm_listarFuncionario();
        Int64 codFuncionario = 0;

        public frm_altFuncionario(frm_listarFuncionario sendedLFuncionario, Int64 sendedCodFunc)
        {
            InitializeComponent();
            listFuncionario = sendedLFuncionario;
            codFuncionario = sendedCodFunc;
        }

        //fecha o form e volta para o form anterior.
        private void bt_cancelar_Click(object sender, EventArgs e)
        {
            this.closeForm();
        }

        //metodo que busca os dados referentes a este funcionário e preenche os campos.
        private void callValuesOfCod()
        {
            Funcionario result = (Funcionario)FuncionarioDB.getInstance().selectByCodFunc(codFuncionario)[0];

            txt_codFuncionario.Text = result.codFuncionario.ToString();
            txt_nomeFuncionario.Text = result.nomeFuncionario;
            txt_cpf.Text = result.cpf;
            txt_rg.Text = result.rg;
            txt_endereco.Text = result.endereco;
            txt_email.Text = result.email;
            txt_celular.Text = result.telefone;
        }

        //chama o método acima.
        private void frm_altFuncionario_Load(object sender, EventArgs e)
        {
            callValuesOfCod();
        }

        //chama método que efetua o update.
        private void bt_alterar_Click(object sender, EventArgs e)
        {
            if (verificaCampos())
            {
                updateByCod();
            }
        }

        //checa os campos, verificando se estão todos preenchidos.
        private bool verificaCampos()
        {
            bool result = true;

            if (txt_nomeFuncionario.Text == "")
            {
                MessageBox.Show("Insira o nome do funcionário para prosseguir!", "Cadastro de Funcionário");
                txt_nomeFuncionario.Focus();
                result = false;
            }

            else if (txt_cpf.Text == "")
            {
                MessageBox.Show("Insira o CPF do funcionário para prosseguir!", "Cadastro de Funcionário");
                txt_cpf.Focus();
                result = false;
            }

            else if (txt_rg.Text == "")
            {
                MessageBox.Show("Insira o RG do funcionário para prosseguir!", "Cadastro de Funcionário");
                txt_rg.Focus();
                result = false;
            }

            else if (txt_endereco.Text == "")
            {
                MessageBox.Show("Insira o Endereço do funcionário para prosseguir!", "Cadastro de Funcionário");
                txt_endereco.Focus();
                result = false;
            }

            else if (txt_email.Text == "")
            {
                MessageBox.Show("Insira o E-mail do funcionário para prosseguir!", "Cadastro de Funcionário");
                txt_email.Focus();
                result = false;
            }

            else if (txt_celular.Text == "")
            {
                MessageBox.Show("Insira o número Celular do funcionário para prosseguir!", "Cadastro de Funcionário");
                txt_celular.Focus();
                result = false;
            }

            return result;
        }

        //método responsável pelo update.
        private void updateByCod()
        {
            Int64 codFuncionario = Int64.Parse(txt_codFuncionario.Text);
            string nome = txt_nomeFuncionario.Text;
            string cpf = txt_cpf.Text;
            string rg = txt_rg.Text;
            string endereco = txt_endereco.Text;
            string email = txt_email.Text;
            string telefone = txt_celular.Text;

            if (FuncionarioDB.getInstance().updateAllValues(codFuncionario, nome, cpf, rg, endereco, email, telefone))
            {
                MessageBox.Show("Registro alterado com sucesso!", "Alteração de Registro");
                listFuncionario.loadDadosOnGrid();
                this.closeForm();
            }
            else
            {
                MessageBox.Show("Erro ao tentar alterar o registro!", "Alteração de Registro");
            }
        }
    }
}
